home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok82.lha / Plot / plot.dok < prev    next >
Text File  |  1993-08-15  |  10KB  |  313 lines

  1. Plot                                                          3.1.93
  2.  
  3. Stefan Köhle
  4. Erhardtstr. 10
  5. W-7033 Herrenberg
  6. Tel. 07032/5146
  7.  
  8.  
  9.  
  10.  
  11.                 Dieses Programm ist Public Domain,
  12.  
  13.      es darf ohne Einschränkungen benutzt, kopiert und verteilt werden,
  14.      solange sich niemand daran bereichert; der Preis pro Diskette darf
  15.      nicht mehr als 5 DM betragen.
  16.  
  17.  
  18.  
  19.  
  20. Plot dient dazu, Funktionen in zwei Variablen zu zeichnen.
  21.  
  22.  
  23. Benötigt werden dazu:
  24.  
  25.    Die Req.Library, die ReqTools.Library, die Mathieedubbas.Library,
  26.    die Mathtrans.Library und die IFF.Library im Libs: -Ordner.
  27.    Sie befinden sich auf dieser Diskette im Libs -Ordner.
  28.    Desweiteren 1 Amiga, Kickstart 1.2, 1.3, 2.x.
  29.    Unter Kick 1.1 tuts nicht.
  30.    Unter Kick 2.x tuts zwar, die neuen Grafikmodi werden aber nicht
  31.    unterstützt.
  32.  
  33. Speicherverbrauch:
  34.  
  35.    1 MB reicht für die Sparversion (kleine Bitmap),
  36.    ab 1.5 MB tuts dann richtig. Der Speicher darf aber nicht zu sehr
  37.    fragmentiert sein.
  38.    Bei 512 KB Chipmem kanns beim Start über die Workbench von der Festplatte
  39.    eng werden, wenn die Platte zuviel Cache Speicher braucht.
  40.    Start von Diskette oder übers CLI kann helfen.
  41.  
  42.  
  43. Start von der Workbench: Doppelklick aufs Icon.
  44.  
  45.    Es wird ein Screen geöffnet und ein Stringrequester fordert die Eingabe
  46.    einer Funktion. Er wird durch RETURN oder durch Drücken von OK beendet.
  47.    Falls die Funktion Fehler enthalten sollte, erscheint der Stringrequester
  48.    nochmal, wobei im Fenstertitel der Fehler moniert wird.
  49.    Falls der Stringrequester mit CANCEL beendet wird, oder nur RETURN
  50.    gedrückt wird, kommt der Filerequester.
  51.  
  52.  
  53.  
  54. Aufruf vom CLI aus: Plot  oder: Plot Argument
  55.  
  56.    Argument ist entweder die Funktion selber, oder der Name einer schon
  57.    gespeicherten Funktion.
  58.  
  59.    Es wird versucht, 'Argument' im eventuell vorhandenen Directory
  60.    'Funktionen' zu laden. Falls es kein 'Funktionen' gibt, wird versucht
  61.    'Argument' im aktuellen Directory zu laden. Erst wenn das auch nicht geht,
  62.    wird 'Argument' als Funktion interpretiert.
  63.    Wenn die Funktion Fehler enthält, kommt der Stringrequester so lange bis
  64.    keine Fehler mehr drin sind.
  65.  
  66.  
  67.    Bsp: plot sin(x^2)+cos(y^2)   oder     plot Funktion1
  68.  
  69.  
  70.  
  71. Die Funktion wird zuerst auf kleiner Bitmap gezeichnet (640 x 512).
  72. Wenn der Ausschnitt, die Auflösung und sonstige Layoutarbeiten beendet sind,
  73. kann auf die große Bitmap umgeschaltet werden. (1720 x 1351)
  74. Hier kann man nur noch die Auflösung ändern.
  75.  
  76.  
  77.  
  78. Unterstützte Funktionen:
  79.  
  80.       sin       sinh      arcsin    arsinh
  81.       cos       cosh      arccos    arcosh
  82.       tan       tanh      arctan    artanh
  83.       cot       coth      arccot    arcoth
  84.       sec       cosec
  85.       sqr       sqrt
  86.       log       ln        exp
  87.       fac
  88.       abs
  89.       int
  90.  
  91.  
  92.  
  93. Menüs:
  94.  
  95.    Projekt
  96.       neue Funktion:  Der Stringrequester erscheint, alle Faktoren werden
  97.                       auf die Defaultwerte gesetzt, es wird auf die kleine
  98.                       Bitmap umgeschaltet.
  99.  
  100.       Funktion ändern:  Der Stringrequester erscheint mit der Funktion, welche
  101.                         ediert werden kann. Faktoren bleiben erhalten.
  102.  
  103.       Funktion laden:  Eine Funktion wird geladen, mit allen Faktoren und
  104.                        sonstigen Einstellungen, es wird auf jeden Fall mit
  105.                        kleiner Bitmap begonnen.
  106.  
  107.       Funktion speichern:  Eine Funktion wird als String gespeichert mit allen
  108.                            Faktoren und sonstigen Einstellungen.
  109.                            Falls ein Directory 'Funktionen' existiert, wird
  110.                            dorthin verzweigt, sonst nicht.
  111.  
  112.       Bild speichern:  Die gezeichnete Funktion wird als IFF Bild gespeichert.
  113.                        Falls ein Directory 'Bilder' existiert, wird dorthin
  114.                        verzweigt, sonst nicht.
  115.                        Je nach gewählter Bitmapgröße als 640 x 512 bei
  116.                        kleiner Bitmap, oder als 1720 x 1351 bei großer Bitmap.
  117.                        An den Namen wird, wenn nicht schon vorhanden, ein .IFF
  118.                        drangehängt.
  119.  
  120.       Bild laden:  Funktioniert noch nicht. Irgendwie tut die Ladeprocedur
  121.                    aus der IFF.Library nicht mit Superbitmap Windows.
  122.                    Wer weiß, wies geht, möge es mir kundtun.
  123.  
  124.       Quit:    Ende. Geht auch mit ESC.
  125.  
  126.  
  127.    Auflösung
  128.  
  129.       lächerlich: Es werden bei kleiner Bitmap  16 x  12 =   192 , und
  130.                             bei grosser Bitmap  48 x  36 =  1728 Punkte
  131.                   berechnet.
  132.  
  133.       gering:     Es werden bei kleiner Bitmap  24 x  18 =   432 , und
  134.                             bei grosser Bitmap  72 x  54 =  3888 Punkte
  135.                   berechnet.
  136.  
  137.       mittel:     Es werden bei kleiner Bitmap  32 x  24 =   768 berechnet.
  138.                   Bei großer Bitmap passt das mit der Rasterung nicht so
  139.                   ganz, daher ist dieser Punkt dann nicht anwählbar.
  140.  
  141.       hoch:       Es werden bei kleiner Bitmap  48 x  36 =  1728 , und
  142.                             bei grosser Bitmap 144 x 108 = 15552 Punkte
  143.                   berechnet.
  144.  
  145.       noch höher: Es werden bei kleiner Bitmap 96  x  72 =  6912 , und
  146.                             bei grosser Bitmap 288 x 216 = 62208 Punkte
  147.                   berechnet.
  148.  
  149.  
  150.  
  151.    Einstellungen
  152.  
  153.       Raster:  Es werden gestrichelte Hilfslinien gezeichnet.
  154.  
  155.       Kasten:  Es wird ein Kasten gezeichnet, der den Zeichenraum umrahmt.
  156.  
  157.       Achsen:  Die Achsen werden eingezeichnet.
  158.  
  159.       Beschriftung: Die Achsen werden beschriftet.
  160.  
  161.       Fläche:  Die Funktion wird ausgefüllt gezeichnet, was aussieht
  162.                wie hidden-lines.
  163.                Bei nicht-Fläche gibts Liniengrafik, was viel schneller geht,
  164.                aber leicht unübersichtlich wird.
  165.  
  166.       f(x,y) reinschreiben:  Die Funktion wird oben links reingeschrieben.
  167.  
  168.       Kleine Bitmap:  Ein normaler Hires Interlace Screen (640 * 512).
  169.  
  170.       Große Bitmap:  Ein Hires Interlace Screen aber mit SuperBitmap Window
  171.                      und mit einer 1720 x 1351 Punkte großen Bitmap.
  172.                      Diese wird mit der Maus gescrollt. Bei zu wenig Speicher
  173.                      ist dieser Menüpunkt nicht anwählbar, dann kommt aber
  174.                      schon beim Programmstart ein Requester, der darauf
  175.                      hinweist.
  176.  
  177.  
  178.  
  179.  
  180.  
  181. Tastaturbelegung kleine Bitmap:
  182.  
  183.    Mit ESC oder CTRL C wird das Programm beendet.
  184.  
  185.    Die HELP - Taste bringt ein Fenster, in dem die Tastaturbelegung
  186.    gezeigt wird. Das Fenster ist nur aktiv solange die HELP-Taste
  187.    gedrückt ist.   Nur bei kleiner Bitmap.
  188.  
  189.    Der gezeigte Ausschnitt kann in X-Richtung mit den Cursortasten 'links'
  190.    und 'rechts', bzw. auf dem Ziffernblock mit den Tasten '4' und '6' um
  191.    eine halbe Einheit nach links bzw. nach rechts verschoben werden.
  192.  
  193.    Für die Y-Richtung gibt es die Cursortasten 'rauf' und 'runter'.
  194.  
  195.    Die Z-Richtung wird über die Tasten '8' und '2' auf dem Ziffernblock
  196.    bedient.
  197.  
  198.  
  199.    Mit SHIFT geht es jeweils eine ganze Einheit und mit ALT geht es einen
  200.    ganzen Bildschirmausschnitt.
  201.  
  202.  
  203.    Mit F1 wird hinein gezoomt, mit F6 heraus.
  204.    Mit F2 bzw F7 wird die Funktion in X-Richtung gestreckt bzw gestaucht.
  205.        F3     F8                      Y
  206.        F4     F9                      Z
  207.  
  208.    Mit F10 gibts wieder die Anfangseinstellung.
  209.  
  210.    Die gleichen Aktionen können auch mit den Zifferntasten direkt unter
  211.    den Funktionstasten erreichet werden, falls die Funktionstasten schon
  212.    anderweitig vergeben sein sollten.
  213.  
  214.  
  215.  
  216. Tastaturbelegung große Bitmap:
  217.  
  218.    Mit ESC kann das Programm beendet werden.
  219.  
  220.  
  221.  
  222. N' paar Rechenzeiten, gemessen auf Amiga 1000:
  223.  
  224.    f(x,y) = sin(x^2+y^2)  (in Funktionen als Blubb zu finden)
  225.  
  226.                  Auflösung          kleine Bitmap   große Bitmap
  227.  
  228.    Fläche        noch höher            1.27 min      15.38 min
  229.    Gitter        noch höher            0.48 min       8.06 min
  230.    Fläche        lächerlich            0.03 min       0.31 min
  231.    Gitter        lächerlich            0.02 min       0.18 min
  232.  
  233.  
  234. Desgleichen auf Amiga 2000 mit 68030-Karte:
  235.  
  236.    Fläche        noch höher            0.21 min       3.33 min
  237.    Gitter        noch höher            0.10 min       1.49 min
  238.    Fläche        lächerlich            0.012 min      0.09 min
  239.    Gitter        lächerlich            0.008 min      0.05 min
  240.  
  241.  
  242.  
  243. Zum Programm selber:
  244.  
  245.    Von den 300 KB Source Code stammen 51,8 % von mir, der Rest ist geklaut.
  246.  
  247.    Die Routine, die den Funktionsstring interpretiert, stammt von
  248.    Stefan Salewskis R.o.M. (AMOK 11).
  249.  
  250.    Der Filerequester ist aus der Req.Library von Jürgen Zimmermann (AMOK 55)
  251.  
  252.    Die anderen Requester sind aus der Reqtools.Library von Nico Francois,
  253.    M2Amiga Portierung von Kai Bolay,
  254.    ReqToolsSupport von Frank Lömker (AMOK 69).
  255.  
  256.    Die Routine zum Bild speichern ist aus der IFFLib von Christian A. Weber,
  257.    M2Amiga Portierung von Fidtjof Siebert (AMOK 18).
  258.  
  259.    Alle Module sind mit den Optionen -s (kein Stapelcheck), -d (Optimierung),
  260.    -y (SMALL-Modell) kompiliert. Das bedeutet 1.5 KB weniger Code und
  261.    um die 7 % weniger Rechenzeit.
  262.  
  263.    Gelinkt mit der Option -x (Unützer Code fliegt raus), bringt 4 KB weniger
  264.    Code.
  265.  
  266.  
  267. Bugs, Unzulänglichkeiten:
  268.  
  269. - Da aus mir unbekannten Gründen die Codegröße pro Modul auf 32K begrenzt
  270.   ist, paßt die Procedur, die das Raster vorne und rechts zeichnet, nicht
  271.   mehr ins Hauptprogramm. Daher stoppt das Scrolling währenddessen.
  272.   Je nach Auflösung kann das mehrere Sekunden dauern.
  273.  
  274. - Manchmal gibts Überläufe.  Ich kann sie nicht abstellen, weil's mir
  275.   jedesmal auch den Debugger zerlegt. Aber ich gebe nicht auf.
  276.   z.B: 1/(x^2-y^2)
  277.        -1/abs(x*y)
  278.        1/(x*y)
  279.  
  280. - Die Mitteilungsrequester kriege ich einfach nicht auf meinen Screen,
  281.   wohingegen der Stringrequester, der genau gleich behandelt wird,
  282.   einwandfrei funktioniert.
  283.  
  284. - Beim Start über die Workbench erscheint immer dieses doofe CLI-Fenster
  285.   und ich habe keine Ahnung warum.
  286.  
  287. - Der Speicherverbrauch ist unnötig hoch, da für alle theoretisch möglichen
  288.   62208 Punkte Speicher reserviert wird.
  289.  
  290.  
  291. Zukünftige Erweiterungen:
  292.  
  293. - Speicherverbrauch reduzieren.
  294.  
  295. - Bild laden. Sobald mir jemand sagt, warum die IFFLib bei SuperBitmaps
  296.   versagt.
  297.  
  298. - Hardcopy vom Programm aus.
  299.  
  300. - Umsetzung auf OS 3.0 sobald ich meinen Amiga 4000 habe.
  301.  
  302. - Icons für gespeicherte Funktionen und Bilder mit Default Tool.
  303.  
  304.  
  305.  
  306.  
  307.  
  308. Interessante Funktionen, gute Ideen, Kritik, Geld, Geschenke
  309. bitte an obige Addresse.
  310.  
  311.  
  312.  Viel Spaß!   - Stefan -
  313.